package com.lxx.jmb2c.exceptions;

/**
 * 业务异常类
 * 
 * 用于表示业务逻辑中的异常情况，继承自RuntimeException
 * 
 * 特点：
 * 1. 运行时异常，不需要显式捕获或声明抛出
 * 2. 通常用于业务逻辑校验失败等场景
 * 3. 会被全局异常处理器捕获并返回给前端
 * 
 * 最佳实践：
 * 1. 错误消息应该对用户友好
 * 2. 可以扩展错误码功能
 * 3. 重要异常应该记录日志
 * 
 * 使用示例：
 * // 抛出异常
 * if(user == null) {
 *     throw new BusinessException("用户不存在");
 * }
 * 
 * // 捕获异常(可选)
 * try {
 *     service.doSomething();
 * } catch (BusinessException e) {
 *     log.error("业务异常", e);
 * }
 * 
 * 安全注意事项：
 * 1. 异常消息不应包含敏感信息
 * 2. 重要业务异常应该记录操作日志
 * 
 * @author lxx
 * @since 2025-07-02
 */
public class BusinessException extends RuntimeException {
    /**
     * 无参构造函数
     * 
     * 创建一个没有详细消息的业务异常
     * 建议使用场景：
     * - 简单业务校验失败
     * - 错误信息由调用方补充
     */
    public BusinessException() {
        super();
    }

    /**
     * 带消息的构造函数
     * 
     * 创建一个包含详细错误信息的业务异常
     * 
     * @param message 异常的详细描述信息
     *                要求：
     *                - 对用户友好
     *                - 不包含敏感信息
     *                - 简明扼要
     */
    public BusinessException(String message) {
        super(message);
    }

    // 可以扩展更多构造函数，如带错误码的构造方法
    // public BusinessException(int code, String message) {
    //     super(message);
    //     this.code = code;
    // }
}
